const express = require('express');
// 引入要操作的集合
const user = require("./3sql/user");
const app = express();

app.use( express.static("./www") );
app.use( express.urlencoded() );

app.post("/login", async (req, res, next)=>{
  const {username, password} = req.body;
  // 根据接收到的用户名，读取数据库信息
  const data = await user.find({username}, {_id:0, __v:0});
  // 判断是否读到
  if(data.length > 0){
    // 读到了，判断密码是否相符
    if(data[0].password === password){
      // 相符
      res.send({
        code:1,
        msg:"登录成功",
        data: data[0]
      })
    }else{
      // 不相符
      res.send({
        code:2,
        msg:"密码不对"
      })
    }
  }else{
    // 没读到
    res.send({
      code:0,
      msg:"用户名不存在"
    })
  }
})

app.post("/abc", (req, res, next)=>{
  const un = req.body.username;
  const pw = req.body.password;
  // 按照接收到的用户名，读取集合中的数据
  user.find({username: un}).then(data=>{
    // 读到了
    if(data.length > 0){
      res.send( {
        state: 0,
        msg:"用户名重复"
      } );
    }else{
      // 没读到，向数据库新增
      user.insertMany({
        uId: Math.random() + "" + Date.now(),
        username: un,
        password: pw,
        tel: "",
        nickName: "",
        age: 0,
        sex: "",
        regTime: Date.now(),
        power: 0
      }).then(()=>{
        res.send( {
          state: 1,
          msg:"注册成功"
        } );
      })
    }
  })
})

app.post("/getuser",async (req,res,next)=>{
  const {uId} = req.body;
  // 根据接收到的uId，读取数据库信息
  const data = await user.find({ uId });
  // 直接响应给前端
  res.send({
    code:1,
    msg:"获取成功",
    data:data[0]
  })
})

app.listen(3000, ()=>{
  console.log("服务器开启成功");
});

// 准备一个变量用来存储注册的用户信息

// 注册：
  // 接收用户信息（名，密码）
  // 判断是否已经存在本次接收到的用户名
  // 如果存在，注册失败
  // 不过不存在，存起来（变量 或 数据库），注册成功
// 登录
  // 接收用户信息（名，密码）
  // 判断是否已经存在本次接收到的用户名
  // 如果存在，继续判断密码，是否和当前重复用户名的密码匹配
    // 如果匹配，登录成功，产生一个登录成功的状态，将状态和用户信息一起给前端
    // 如果不匹配，密码错误
  // 如果不存在，用户名不存在
// 获取个人信息
  // 接收信息（登录状态，个人id）
  // 验证登录状态是否正确
    // 不正确，表示未登录
    // 正确，根据id查找用户信息
      // 找不到，用户信息不存在
      // 找到了，将信息给前端
// 修改用户信息
  // 接收信息（uId，tel，nickName，age，sex）
  // 解析处理数据
  // 根据uId修改数据库指定信息
  // 修改成功后，给前端响应
